package com.demo5_最长回文串;
/*
   给你一个字符串 s，找到 s 中最长的回文子串。
   思路：
   1.从字符串的左到右遍历
   2.一共2个指针，还有一个字符串总是保存最大的回文串

 */
public class Test5 {
    public static void main(String[] args) {
        System.out.println(longestPalindrome("aaaa"));
    }

    public static String longestPalindrome(String s) {

        String temp=null;
        if(s!=null) {
            temp=String.valueOf(s.charAt(0));
        }
        int left;
        int right;
        for (int i = 0; i <s.length(); i++) {
            //1.判断right 指针是否越界
            if((right=i+1)==s.length())
                return temp;
            //2.如果在范围内，则判断和上一个是否相等
            if(s.charAt(right)==s.charAt(i)){
                left=i-1;
                right++;
                while(right<s.length()&&left>=0){
                    if(s.charAt(left)!=s.charAt(right)){
                        //2.1对该符合的长度与temp 字符串的长度比较
                        if((right-left-1)>temp.length()){
                            //2.2将这一段字符串赋值给 temp
                            temp=s.substring(left+1,right);
                        }
                        break;
                    }
                    if(left==0||right==s.length()-1){
                        if((right-left+1)>temp.length()){
                            //3.2将这一段字符串赋值给 temp
                            temp=s.substring(left,right+1);
                        }
                    }
                    left--;
                    right++;
                }

                if(2>temp.length()){
                    //3.2将这一段字符串赋值给 temp
                    temp=s.substring(i,i+2);
                }

            }
            //3.判断是否和 第 i-1 个相等
            right=i+1;
            if(i>0&&(s.charAt(i-1)==s.charAt(right))){
                left=i-2;
                right=right+1;
                while (right<s.length()&&left>=0){
                    if(s.charAt(left)!=s.charAt(right)){
                        //3.1对该符合的长度与temp 字符串的长度比较
                        if((right-left-1)>temp.length()){
                            //3.2将这一段字符串赋值给 temp
                            temp=s.substring(left+1,right);
                        }
                        break;
                    }
                    if(left==0||right==s.length()-1){
                        if((right-left+1)>temp.length()){
                            //3.2将这一段字符串赋值给 temp
                            temp=s.substring(left,right+1);
                        }
                    }

                    left--;
                    right++;
                }

                if(3>temp.length()){
                    //3.2将这一段字符串赋值给 temp
                    temp=s.substring(i-1,i+2);
                }
            }
        }

        return s;
    }
}
